0018.5 Validators
- aliases
- No value
- tags
- No value
- description
- No value
- links
- https://docs.nestjs.com/techniques/serialization#transform Nest.js π±
- status
- Pending
- project
- false
- area
- true
- resource
- false
- title
- 0018.5 Validators
- created
- 2025-02-13T10:51:21
- updated
- 2025-02-22T19:55:50
TL;DR for NestJS Serialization - Transform usnig ChatGPT
NestJSμ @Transform λ°μ½λ μ΄ν°λ DTOμμ λ°μ΄ν°λ₯Ό λ³ννλ λ° μ¬μ©λ©λλ€.
μ΄ κΈ°λ₯μ class-transformer ν¨ν€μ§λ₯Ό νμ©νλ©°, μ
λ ₯ λ°μ΄ν°λ₯Ό κ°κ³΅νκ±°λ μΆλ ₯ λ°μ΄ν°λ₯Ό νΉμ νμμΌλ‘ λ³νν λ μ μ©ν©λλ€.
β ν΅μ¬ κΈ°λ₯
- μΆλ ₯ λ°μ΄ν° λ³ν: 컨νΈλ‘€λ¬μ
@SerializeOptions()λλ@UseInterceptors(ClassSerializerInterceptor)λ₯Ό ν΅ν΄ λ³ν κ°λ₯ - μ
λ ₯ λ°μ΄ν° λ³ν:
@Transform(({ value }) => value.toUpperCase())κ°μ ν¨μλ₯Ό μ¬μ©ν΄ DTO μμ± λ³ν κ°λ₯ - μ‘°κ±΄λΆ λ³ν:
@Transform(({ obj, key }) => obj[key] ? obj[key].trim() : null)μ²λΌ 쑰건μ νμ©ν λ³ν κ°λ₯
π μ¬μ© μμ
import { Transform } from 'class-transformer';
export class UserDto {
@Transform(({ value }) => value.toUpperCase())
name: string;
@Transform(({ value }) => new Date(value), { toClassOnly: true })
createdAt: Date;
}
μ μ½λμμ:
nameνλλ μλμΌλ‘ λλ¬Έμ λ³νλ¨createdAtμ λ¬Έμμ΄μ Date κ°μ²΄λ‘ λ³ννμ¬ DTOμ μ μ©
π μΆκ° μ¬ν
@Expose()μ ν¨κ» μ¬μ©νμ¬ νΉμ νλλ§ μ§λ ¬ν κ°λ₯@Exclude()λ₯Ό μ΄μ©ν΄ νΉμ νλλ₯Ό μ¨κΈΈ μλ μμtoClassOnly/toPlainOnlyμ΅μ μ μ¬μ©νμ¬ λ³ν λ°©ν₯μ μ‘°μ κ°λ₯
π DTOμμ λ°μ΄ν°λ₯Ό λ€λ£° λ, μνλ νμμΌλ‘ λ³νν μ μλ κ°λ ₯ν κΈ°λ₯μ μ 곡! π